<div class="{{$viewClass['form-group']}}">

    <label class="{{$viewClass['label']}} control-label">{{$label}}</label>

    <div class="{{$viewClass['field']}}">

        @include('admin::form.error')

        <div {!! $attributes !!} style="width: 100%; height: 100%;">
            <p>{!! $value !!}</p>
        </div>

        <input type="hidden" name="{{$name}}" value="{{ old($column, $value) }}"/>

        @include('admin::form.help-block')

    </div>
</div>
<!-- script标签加上 "init" 属性后会自动使用 Dcat.init() 方法动态监听元素生成 -->
<script require="@wang-editor" init="{!! $selector !!}">
    var E = window.wangEditor
    const {$, BtnMenu, DropListMenu, PanelMenu, DropList, Panel, Tooltip} = E

    class AlertMenu extends BtnMenu {
        constructor(editor) {
            // data-title属性表示当鼠标悬停在该按钮上时提示该按钮的功能简述
            const $elem = E.$(
                `<div class="w-e-menu" data-title="Alert">
                <img src="https://static.135editor.com/img/icons/editor-135-icon.png" alt="">
            </div>`
            )
            super($elem, editor)
        }

        // 菜单点击事件
        clickHandler() {
            // 做任何你想做的事情
            // 可参考【常用 API】文档，来操作编辑器
            var that = this;

            function onContentFrom135(event) {
                if (typeof event.data !== 'string') {
                    if (event.data.ready) {
                        editor135.postMessage(that.editor.txt.html(), '*');
                    }
                    return;
                }
                ;

                if (event.data.indexOf('<') !== 0) return;

                that.editor.txt.html(event.data);
                window.removeEventListener('message', onContentFrom135);
            }

            var editor135 = window.open('https://www.135editor.com/simple_editor.html?callback=true&appkey=')

            window.removeEventListener('message', onContentFrom135);
            window.addEventListener('message', onContentFrom135, false);
        }

        tryChangeActive() {
            this.active()
        }
    }

    const menuKey = '135'
    // 注册菜单
    E.registerMenu(menuKey, AlertMenu)
    // id 变量是 Dcat.init() 自动生成的，是一个唯一的随机字符串
    var editor = new E('#' + id);
    editor.config.debug = true;
    editor.config.zIndex = 0
    editor.config.uploadImgShowBase64 = false
    editor.config.uploadImgServer = '/api/imagesW'
    editor.config.uploadFileName = 'pic'
    editor.config.pasteFilterStyle = false
    // editor.config.uploadImage(e)
    editor.config.uploadImgHooks = {
        error: function (xhr, editor) {
            alert("2：" + xhr + "请查看你的json格式是否正确，图片并没有上传");
            // 图片上传出错时触发 如果是这块报错 就说明文件没有上传上去，直接看自己的json信息。是否正确
            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象
        },
        fail: function (xhr, editor, result) {
            // 如果在这出现的错误 就说明图片上传成功了 但是没有回显在编辑器中，我在这做的是在原有的json 中添加了
            // 一个url的key（参数）这个参数在 customInsert也用到
            //
            alert("1：" + xhr + "请查看你的json格式是否正确，图片上传了，但是并没有回显");
        },
        success:function(xhr, editor, result){
            //成功 不需要alert 当然你可以使用console.log 查看自己的成功json情况
            //console.log(result)
            // insertImg(‘https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png‘)
        },
        customInsert: function (insertImg, result, editor) {
            //console.log(result);
            // 图片上传并返回结果，自定义插入图片的事件（而不是编辑器自动插入图片！！！）
            // insertImg 是插入图片的函数，editor 是编辑器对象，result 是服务器端返回的结果
            // 举例：假如上传图片成功后，服务器端返回的是 {url:‘....‘} 这种格式，即可这样插入图片：

            if (result.errno == 1) {
                alert(result.msg)
                return
            }

            result.data.forEach(function (item, index){
                insertImg(item.url);
            })
            // insertImg(result.url);
        }
    };
    editor.config.onchange = function (html) {
        $this.parents('.form-field').find('input[type="hidden"]').val(html);
    }
    editor.create()
</script>
